package org.example.pms.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 解决CORS的跨域问题
 * <p>
 * 方式一：通过实现WebMvc的配置类，修改addCorsMappings的配置规则即可。
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Value("${file.uploadPatch}")
    private String uploadFilePath;


    /**
     * 解决CORS的跨域问题
     * <p>
     * 方式一：通过实现WebMvc的配置类，修改addCorsMappings的配置规则即可。
     *
     * @param registry 跨域注册器，用于设置跨域相关的规则
     */
//    @Override
//    public void addCorsMappings(CorsRegistry registry) {
//        registry.addMapping("/**") // 对所有路径生效
//                .allowedOrigins("http://localhost:8081") // 允许的域
//                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的方法
//                .allowedHeaders("*") // 允许的头部信息
//                .allowCredentials(true); // 允许发送cookie
//    }


    /**
     * 配置静态资源映射的方法
     *
     * 在Spring Boot的静态资源配置中，file:前缀用于指示资源路径是一个文件系统路径,
     * 如果你省略了file:前缀，Spring Boot默认会认为资源路径是一个类路径路径（即项目的resources目录下的路径）。
     *
     * @param registry 资源处理器注册器，用于设置静态资源的映射规则
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // /static/**是静态映射， file:D:/static/images/是文件在服务器的路径
        registry.addResourceHandler("/static/**")
                .addResourceLocations("file:"+uploadFilePath+"/"); // 指定文件系统中的路径
    }

}